iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0

實作範例

說明:

實作一個範例,在API的請求中帶入兩個參數A、B,而API回傳時返回A、B兩數的最大公因數。

在以下實作將建立一個Controller Class且於類別內定義指定的方法並搭配Postman發起API請求以及接收回傳內容。

範例程式如下:

@RestController //Step1.
@RequestMapping("/Controller") //Step2.
public class ExampleController {

    @Autowired
    public ExampleService exampleService;

    @RequestMapping(value = "/highestCommonFactor", method = {RequestMethod.GET}) //Step3.
    @ResponseBody
    //Step4.
    public String calculHighestCommonFactor
            //Step5.
            (@RequestParam(value = "A", required = true) int A,
            @RequestParam(value = "B", required = true) int B) 
            {

        int GCD = exampleService.getHighestCommonFactor(A, B); //Step6.
        return "最大公因數 = " + GCD; //Step7.
    }

}

Step1. 要想在程式內提供 RESTful Web 服務,需先於類別上加入 @RestController 的註解。

Step2. 承如先前的介紹,我們可以在類別上加上 @RequestMapping 的註解。

假設在 Application 內存在多個 Controller ,且在不同的 Controller 下會有多個接收請求的方法,而有些方法可能都在處理類似的請求, 在此情況下如果設定了同個路徑名稱,就會違反了該路徑在全局的唯一性。此時,如果在類別上添加 @RequestMapping 的註解並且給予不同的父路徑, 就可以很好的解決此問題的發生。

Step3. 定義方法的路徑以及可接受的請求方法,這邊實作GET方法。

Step4. 定義實作方法的名稱。

Step5. 定義所接收的參數。

Step6. 當收到請求後,將透過業務邏輯層 @Server 針對請求的資料進行處理。

Step7. 最後返回業務邏輯層處理後的結果。

當我們把程式Run起來後,可以利用Postman發起 API 請求,結果如下圖:

https://ithelp.ithome.com.tw/upload/images/20240926/20168753ETzYs4P2sz.jpg

假設我們換不同的請求方法發起 API ,會發生HTTP 405 的錯誤,結果如下圖:

https://ithelp.ithome.com.tw/upload/images/20240926/20168753LW9faZdzrS.jpg

這是因為此支 API 當初在設計時並不支援 POST 方法所以如果想要透過POST將請求送到此API,需要在 method 屬性內加入接受的請求方法。


上一篇
Day11 - Controller下的Bean (中)
下一篇
Day13 - Model中的業務邏輯 @Service(上)
系列文
這些年SpringBoot實戰開發教會我的事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言